﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Runtime.Serialization;

namespace elr_tracking_bal.CAT
{
    public class ProveedorCategoria
    {
        public int ID_PROVEEDOR;
        public int ID_CATEGORIA;
        public string CATEGORIA;
        public int CHECKED;
        public bool check;
        /// <summary>
        /// Método para insertar, eliminar y modificar la relación Proveedor Categoría
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="CATEGORIA"></param>
        /// <returns></returns>
        public static elr_tracking_bal.UpsertStateMsg insertRelProveedorCategoria(int ID_PROVEEDOR, string CATEGORIA)
        {
            UpsertStateMsg inserRel;
            try
            {
                CATEGORIA = CATEGORIA.Replace("'", "''");
                int dt = elr_tracking_dal.SrvDB.ExecuteNonQuery("exec SP_REL_CAT_PROVEEDOR_CATEGORIA " + ID_PROVEEDOR + ",'" + CATEGORIA + "'");
                inserRel = new UpsertStateMsg("Registros guardados " + dt.ToString(), true);
                return inserRel;
            }
            catch (Exception ex)
            {
                inserRel = new UpsertStateMsg("Error al guardar " + ex, false);
                return inserRel;
            }
        }
        /// <summary>
        /// Método para obtener la lista de relación entre Proveedor y Categorías
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <returns></returns>
        public static List<ProveedorCategoria> GetListProveedorCategoria(int ID_PROVEEDOR)
        {
            try
            {
                DataTable dt = elr_tracking_dal.SrvDB.ExecuteQuery("exec SP_GETLIST_R_PROVEEDOR_CATEGORIA " + ID_PROVEEDOR + "");
                if (dt.Rows.Count == 0)
                {
                    return null;
                }
                else
                {
                    List<ProveedorCategoria> list = dt.AsEnumerable().Select(
                        row => new ProveedorCategoria
                        {
                            ID_CATEGORIA = row.Field<int?>(0).GetValueOrDefault(),
                            CATEGORIA = String.IsNullOrEmpty(row.Field<string>(1)) ? "" : row.Field<string>(1),
                            CHECKED = row.Field<int?>(2).GetValueOrDefault(),
                        }
                        ).ToList();
                    return list;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
        /// <summary>
        /// Constructor sin parámetros
        /// </summary>
        public ProveedorCategoria() { }
        /// <summary>
        /// Constructor con dos parámetros
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="CATEGORIA"></param>
        public ProveedorCategoria(int ID_PROVEEDOR, string CATEGORIA) {
            this.ID_PROVEEDOR = ID_PROVEEDOR;
            this.CATEGORIA = CATEGORIA;
        }
        public ProveedorCategoria(int ID_PROVEEDOR, int ID_CATEGORIA)
        {
            this.ID_PROVEEDOR = ID_PROVEEDOR;
            this.ID_CATEGORIA = ID_CATEGORIA;
            this.check = false;
        }
        /// <summary>
        /// Constructor con tres parámetros
        /// </summary>
        /// <param name="ID_CATEGORIA"></param>
        /// <param name="CATEGORIA"></param>
        /// <param name="CHECKED"></param>
        public ProveedorCategoria(int ID_CATEGORIA, string CATEGORIA, int CHECKED)
        {
            this.ID_CATEGORIA = ID_CATEGORIA;
            this.CATEGORIA = CATEGORIA;
            this.CHECKED = CHECKED;
        }
    }
}